/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package controller;

import java.io.IOException;

/**
 *
 * @author Administrador
 */
public class Network {
    private static String direcciones[] = new String[10];

    // abre en el navegador predeterminado en el sistema,  la pagina q a este se le introduzca.
    public static void irDirHttp( String direccion) throws IOException{
    String url = direccion;
    Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + url);
  
    }
    
        // Metodo que se encarga de cargar de direcciones posibles para encontrar mas juegos.
    public static void cargarDireccionesWeb(){
    direcciones[0] = "http://www.sudoku-online.org/";
    direcciones[1] = "http://sudoku.arredemo.org/";
    direcciones[2] = "http://www.sudokumania.com.ar/sm1/sudoku-online.php";
    direcciones[3] = "http://es.websudoku.com/";
    direcciones[4] = "http://www.sudoku10.net/sudokus-sudoku-online.html";
    direcciones[5] = "http://www.desudoku.com/";
    direcciones[6] = "http://www.jugarconjuegos.com/ESTRATEGIA/JUEGO%20SUDOKU.htm";
    direcciones[7] = "http://mas.lne.es/sudoku/";
    direcciones[8] = "http://www.sudoku.nom.es/";
    direcciones[9] = "http://sudoku.3ontech.com/";
    
    }
    
    // Metodo que genera un numero aleatorio  dado los limites como ingreso
    private static int aleatorio(int max,int min) {
     int num = (int)(Math.round(Math.random() * (max-min))) + min;
     return num;
    }
    
    //Metodo que elige de manera aleatoria una de las paginas cargadas por defecto en el 
    // arreglo de direcciones
    public static String elegirHttpJuegos(){
    cargarDireccionesWeb();
    int num = aleatorio(0,9);
    return direcciones[num];
    }
    
    
    //Metodo que deriva a las intrucciones del como se juega el sudoku.
    public static void ayudaWeb() throws IOException{
    irDirHttp("http://es.wikipedia.org/wiki/Sudoku");
    }

    // Metodo que llama al webservice y  trae una matriz con dificultad facil.
    private static String optenerMatrizFacil() {
        service.ServiceGeneradorMatriz_Service service = new service.ServiceGeneradorMatriz_Service();
        service.ServiceGeneradorMatriz port = service.getServiceGeneradorMatrizPort();
        return port.optenerMatrizFacil();
    }

    // Metodo que llama al webservice y  trae una matriz con dificultad dificil.
    private static String optenerMatrizNdificil() {
        service.ServiceGeneradorMatriz_Service service = new service.ServiceGeneradorMatriz_Service();
        service.ServiceGeneradorMatriz port = service.getServiceGeneradorMatrizPort();
        return port.optenerMatrizNdificil();
    }

    //Metodo que llama al webservice y  trae una matriz con dificultad media.
    private static String optenerMatrizNmedio() {
        service.ServiceGeneradorMatriz_Service service = new service.ServiceGeneradorMatriz_Service();
        service.ServiceGeneradorMatriz port = service.getServiceGeneradorMatrizPort();
        return port.optenerMatrizNmedio();
    }
  
    
    //Metodo que retorna dado un string como parametro,  el mismo parametro representado como matriz.
    private static char[][] stringToMatriz(String arreglo){
        char[][] mat = new char[9][9];
        int k = 0;
        for (int i = 0; i < 9; i++) {
            for (int j = 0; j < 9; j++) {
               mat[i][j] = arreglo.charAt(k);
               k++;
            }
        }
        return mat;
    } 
    
    // Metodo estatico  que retorna una matriz de nivel facil.
    public static char[][] obtenerMatrizF(){
        return stringToMatriz(optenerMatrizFacil());
    }
    
    //Metodo estatico que retorna una matriz de nivel medio.
    public static char[][] obtenerMatrizM(){
        return stringToMatriz(optenerMatrizNmedio());
    }
    
    // Metdo estatico que retorna una matriz de nivel dificil.
    public static char[][] obtenerMatrizD(){
        return stringToMatriz(optenerMatrizNdificil());
    }
    
    
    
    
}
